﻿using System;

namespace WindowsAPI.Windows
{
    /// <summary>Значение смещения, которое устанавливается</summary>
    [Serializable]
    public enum GWL
    {
        /// <summary>Устанавливает новый адрес для оконной процедуры</summary>
        WndProc = (-4),
        /// <summary>Устанавливает новый дескриптор экземпляра прикладной программы</summary>
        Hinstance = (-6),
        /// <summary>???</summary>
        hWndParent = (-8),
        /// <summary>Устанавливает новый стиль окна</summary>
        Style = (-16),
        /// <summary>Устанавливает новый расширенный стиль окна</summary>
        ExStyle = (-20),
        /// <summary>
        /// Устанавливает 32-разрядное значение, связанное с окном. 
        /// Каждое окно имеет соответствующее 32-разрядное значение, 
        /// предназначенное для использования прикладной программой, которая создала окно.
        /// </summary>
        UserData = (-21),
        /// <summary>Устанавливает новый идентификатор окна</summary>
        ID = (-12)
        ///// <summary>Устанавливает новый адрес процедуры диалогового окна</summary>
        //DLGProc = ?
        ///// <summary>
        ///// Устанавливает возвращаемое значение сообщения, обработанного в процедуре диалогового окна
        ///// </summary>
        //MSGResult = ?
        ///// <summary>
        ///// Устанавливает новую дополнительную информацию, которая является частной для 
        ///// прикладной программы, типа дескрипторов или указателей
        ///// </summary>
        //User = ?
    }

    /// <summary>Window Styles</summary>
    [Serializable, Flags]
    public enum WS : uint
    {
        OverLapedd = 0,
        PopUp = 0x80000000,
        /// <summary>
        /// Cоздает дочернее окно. Не может использоваться совместно со стилем WS_POPUP
        /// </summary>
        Child = 0x40000000,
        Minimize = 0x20000000,
        Visible = 0x10000000,
        /// <summary>Создает окно, которое изначально было отключено</summary>
        Disabled = 0x8000000,
        Clipsiblings = 0x4000000,
        /// <summary>
        /// Исключает область занятую дочерними окнами при рисовании внутри родительского окна. 
        /// Используется при создании родительского окна.
        /// </summary>
        ClipChildren = 0x2000000,
        Maximize = 0x1000000,
        /// <summary>
        /// Cоздает окно, которое имеет заголовок окна 
        /// (подразумевает стиль WS_BORDER ). 
        /// Не может использоваться совместно со стилем WS_DLGFRAME
        /// </summary>
        Caption = 0xC00000,
        /// <summary>Создает окно с границей</summary>
        Border = 0x800000,
        /// <summary>Создает окно с двойной границей, но без заголовка</summary>
        DlgFrame = 0x400000,
        VScroll = 0x200000,
        HScroll = 0x100000,
        SysMenu = 0x80000,
        ThickFrame = 0x40000,
        Group = 0x20000,
        TabStop = 0x10000,
        MinimizeBox = 0x20000,
        MaximizeBox = 0x10000,
        Tiled = OverLapedd,
        Iconic = Minimize,
        SizeBox = ThickFrame,

        // Extended Window Styles 
        EX_DlgModAlFrame = 0x0001,
        EX_NoParentNotify = 0x0004,
        EX_TopMost = 0x0008,
        EX_AcceptFiles = 0x0010,
        EX_TransParent = 0x0020,
        EX_MDIChild = 0x0040,
        EX_ToolWindow = 0x0080,
        EX_WindowEDGE = 0x0100,
        EX_ClientEDGE = 0x0200,
        EX_ContextHelp = 0x0400,
        EX_Right = 0x1000,
        EX_Left = 0x0000,
        EX_RTLReading = 0x2000,
        EX_LTRReading = 0x0000,
        EX_LeftScrollBar = 0x4000,
        EX_RightScrollBar = 0x0000,
        EX_ControlParent = 0x10000,
        EX_StaticEDGE = 0x20000,
        EX_AppWindow = 0x40000,
        EX_OverLappedWindow = EX_WindowEDGE | EX_ClientEDGE,
        EX_PALETTEWINDOW = EX_WindowEDGE | EX_ToolWindow | EX_TopMost,
        EX_Layered = 0x00080000,
        /// <summary>Disable inheritence of mirroring by children</summary>
        EX_NoInheritLayout = 0x00100000,
        /// <summary>Right to left mirroring</summary>
        EX_LayoutRTL = 0x00400000,
        EX_Composited = 0x02000000,
        EX_NoActivate = 0x08000000
    }
}
